package today;



import java.io.*;
import java.util.zip.InflaterInputStream;

public class CharIOTest {
    public static void main(String[] args) {
        test01();
        test02();
    }
    /**
     * 字符流的应用：带有buffer的输入输出流
     */
    private static void test02() {
        try{
            //创建一个文件输入流对象 第二个参数指定的编码格式
            BufferedReader fis=new BufferedReader(
                    new InputStreamReader(
                            new FileInputStream(
                                    new File("D:\\temp/CharIO.txt")), "UTF-8"));

            BufferedWriter fos=new BufferedWriter(
              new OutputStreamWriter(
                      new FileOutputStream("D:\\temp/CharIO.txt",true),"UTF-8"
              )
            );
            String strline=fis.readLine();

            //判断是否读取到文件末尾
            while (strline!=null){
                //输出读取内容
                System.out.println(strline);
                //使用文件输出流对象，将内容写出到指定的文件中
                fos.write(strline);
                fos.write("\n");
                fos.newLine();

                strline=fis.readLine();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 字符流的应用：文件输入流
     */
    private static void test01() {
        try{
            //创建一个文件输入刘对象，第二个参数指定的编码格式
            InputStreamReader fis=
                    new InputStreamReader(
                    new FileInputStream(new File("d:\\temp/CharIO.txt")),"UTF-8"
                    );
            OutputStreamWriter fos=new OutputStreamWriter(
                    new FileOutputStream("D:\\temp/CharIO.txt",true),"utf-8"
            );
            //创建一个读取文件输入流中的流数据的容器
            char[] chars=new char[1024];
            //将文件流对象中的内容读取到程序中
            int len=fis.read(chars);
            //判断是否读取到文件的末尾
            while (len!=-1){
                //输出读取的内容
                String str=new String(chars,0,len);
                System.out.println(str);
                //打印到文件中
                fos.write(chars,0,len);
                //重新清理读取的容器数组
                len=fis.read(chars);
            }
            //文件流写完之后文件默认追加一个换汉符
            fos.write("\n".toCharArray());//?
            //关闭资源
            //也可以写在finally部分进行资源回收
            if (fis!=null){
                fis.close();
            }
            //清空输出流
            if (fos!=null){
                fos.flush();
                fos.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
